
// 413.等差数列划分
class Solution {
public:
    int numberOfArithmeticSlices(vector<int>& nums) {
        int n = nums.size();
        if(n < 3) return 0;
        // 使用滑动窗口来处理
        int left = 0 ,right = 0;
        int ret = 0 ,prev = nums[1] - nums[0];
        for(right = 2 ; right < n ; right++)
        {
            if(prev != nums[right] - nums[right-1])
            {
                int len = right - left;             //开区间,当前位置不满足条件
                ret += (len-1)*(len-2)/2;
                left = right - 1;
                prev = nums[right] - nums[right-1];
            }
        }    
        if(prev == nums[n-1] - nums[n-2])
        {
            int len = right - left ;             //开区间,当前位置不满足条件
            ret += (len-1)*(len-2)/2;
        }
        return ret;
    }
};